package judesart.app.client.gallery;

import java.util.List;

import judesart.app.domain.Gallery;
import judesart.app.domain.Room;
import judesart.app.shared.SearchResult;
import com.google.gwt.user.client.rpc.AsyncCallback;

public interface GalleryControllerAsync
{
    void createGallery(Gallery gallery, AsyncCallback<Gallery> callback);

    void updateGallery(Gallery gallery, AsyncCallback<Gallery> callback);

    void deleteGallery(Long galleryId, AsyncCallback<Void> callback);

    void searchGalleries(int startAt, int maxElements, AsyncCallback<SearchResult<Gallery>> callback);

    void getGallery(Long id, AsyncCallback<Gallery> callback);

    void addRoomToGallery(Long galleryId, Room room, AsyncCallback<Room> callback);

    void updateRoom(Room room, AsyncCallback<Void> callback);

    void deleteRoom(Long galleryId, String roomId, AsyncCallback<Void> callback);

    void getRoom(String roomKey, AsyncCallback<Room> callback);

    void addArtworkToRoom(Long artworkId, String roomKey, AsyncCallback<Void> callback);

    void deleteArtworkFromRoom(Long artworkId, String roomKey, AsyncCallback<Void> callback);

    void findAllUserGalleries(Long userId, AsyncCallback<List<Gallery>> callback);
}
